#封装数据库函数
import os
from pprint import pprint

import pymysql
import xlrd


def db_util(database:str,sql:str, host="localhost",user="root",password="123456",
                     port=3306):
    conn=pymysql.connect(host=host,user=user,password=password,port=port,database=database)
    cursor=conn.cursor() #创建游标对象
    rows=cursor.execute(sql)   #执行sql语句
    try:#结果的:如果有数据则返回结果行数,没有数据则返回0
        if sql.lower().startswith("select"):  #判断sql语句是否以select开头
            result=cursor.fetchall() #获取所有数据
            return result #返回结果行数
        else:
            conn.commit()
            return rows
    except Exception as e:
        conn.rollback()
        print(f"An error occurred: {e}")
    finally:  #资源释放
        cursor.close()
        conn.close()

#封装读取excel表格里面的数据
#  file_name 文件名
# sheet_name 表名
# rowx_index 行索引  默认不读取第一行的数据:第一行的数据为表头
def read_excel(file_name:str,sheet_name:str,rowx_index=1,**kwargs):
     # file_name :data.xls    file_path join 做拼接  路径+"/"+"data+"/"
     # os库里面的join方法 作用是拼接路径
     file_path=os.path.join(os.path.dirname(os.path.dirname(__file__)),"data",file_name)
     # file_paths=os.path.dirname(os.path.dirname(__file__))+"/data/"+file_name
     print(file_path)  #做调试用
     wb=xlrd.open_workbook(file_path) #打开文件
     sheet=wb.sheet_by_name(sheet_name) #获取表
     #获取每一行的数据
     row_list=[] #创建一个列表
     for rowx in range(rowx_index,sheet.nrows): #循环每一行 rowx_index:默认从第一行开始 sheet.nrows 行数
         row_data=sheet.row_values(rowx) #获取每一行的数据
         row_list.append(tuple(row_data)) #添加到列表中
     return  row_list #返回列表
def read_excel2(file_name: str, sheet_name: str, rowx_index=1, **kwargs):
    """
    读取 Excel 表格数据，返回指定工作表中从指定行开始的所有行数据，每行数据以元组形式存储。

    :param file_name: Excel 文件路径
    :param sheet_name: 工作表名称
    :param rowx_index: 起始行索引，默认从 1 开始（即忽略表头）
    :param kwargs: 其他可选参数（暂未使用）
    :return: 包含每行数据的列表，每个元素为一行数据的元组形式
    """
    wb = xlrd.open_workbook(file_name)  # 打开文件
    sheet = wb.sheet_by_name(sheet_name)  # 获取表

    # 使用列表推导式优化代码，直接生成每行的数据元组
    return [tuple(sheet.row_values(rowx)) for rowx in range(rowx_index, sheet.nrows)]


if __name__ == '__main__':
    print(read_excel("data.xls", "login_data"))

    # print(db_util("myschools", "DELETE from  students WHERE id in  (SELECT b.id  from (SELECT id from students WHERE sex='女') as b)"))

    # 检查字符串是否以 "Hello" 开头
    # if s.endswith("!"):
    #     print("字符串以 'Hello' 开头")
    # else:
    #     print("字符串不以 'Hello' 开头")